package net.etfbl.projekat.verko.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import net.etfbl.projekat.verko.dto.Casopis;

public class CasopisDAO {
	private static final String INSERT="INSERT INTO tbl_casopis values(null,?,?)";
	private static final String UPDATE="UPDATE tbl_casopis SET naziv=? and cijena=? where id_casopis=?";
	private static final String DELETE="DELETE FROM tbl_casopis where id_casopis=?";
	private static final String SELECT_BY_ID="SELECT naziv,cijena FROM tbl_casopis WHERE id_casopis=?";
	private static final String SELECT_By_ALL="SELECT * FROM tbl_casopis";
	
	public static boolean insert(DataManager dm, Casopis casopis){
		
		boolean uspjesno=false;
		Connection konekcija=dm.checkOutConnection();
		
		try{
			PreparedStatement statment=konekcija.prepareStatement(INSERT);
			
			statment.setString(2, casopis.getNaziv());
			statment.setDouble(3, casopis.getCijena());
			
			if(statment.executeUpdate()==1){
				uspjesno=true;
			}
			else uspjesno=false;
			
			statment.close();
			dm.checkInConnection(konekcija);
		}
		catch (SQLException e){
			e.printStackTrace();
		}
		return uspjesno;
				
	}
	public static boolean  update(DataManager dm,Casopis casopis){
		boolean uspjesno=false;
		
		Connection konekcija=dm.checkOutConnection();
		
		try{
			PreparedStatement statment=konekcija.prepareStatement(UPDATE);
			statment.setString(1, casopis.getNaziv());
			statment.setDouble(2, casopis.getCijena());
			statment.setInt(3, casopis.getId_casopis());
			
			if(statment.executeUpdate()==1){
				uspjesno=true;
			}
			else uspjesno=false;
			
			statment.close();
			konekcija.close();
		}
		catch(SQLException e){
			e.printStackTrace();
		}
		return uspjesno;
	}
    public static boolean delete(DataManager dm,Casopis casopis){
    	boolean uspjesno=false;
    	Connection konekcija=dm.checkOutConnection();
    	
    	try{
    		PreparedStatement statment=konekcija.prepareStatement(DELETE);
    		statment.setInt(1, casopis.getId_casopis());
    		
    		if(statment.executeUpdate()==1){
    			uspjesno=true;
    		}
    		else uspjesno=false;
    		
    		statment.close();
    		konekcija.close();
    	}
        catch (SQLException e){
        	e.printStackTrace();
        }
    	
    	return uspjesno;
    }
    public static Casopis selectByID(DataManager dm,int id_casopisa){
    	Casopis casopis=new Casopis();
    	
    	Connection konekcija=dm.checkOutConnection();
    	
    	try{
    		PreparedStatement statment=konekcija.prepareStatement(SELECT_BY_ID);
    		statment.setInt(1, id_casopisa);
    		
    		ResultSet rezultat=statment.executeQuery();
    		while(rezultat.next()){
    			casopis.setNaziv(rezultat.getString(1));
    			casopis.setCijena(rezultat.getDouble(2));
    		}
    		
    		rezultat.close();
    		statment.close();
    		konekcija.close();
    	}
    	catch(SQLException e){
    		e.printStackTrace();
    	}
    	return casopis;
    }
    public static ArrayList<Casopis> selectAll(DataManager dataManager){
    	  ArrayList<Casopis> Casopis=new ArrayList<Casopis>();
    	 Connection konekcija=dataManager.checkOutConnection();
    	 
    	 try{
    		 PreparedStatement statment=konekcija.prepareStatement(SELECT_By_ALL);
    		 ResultSet rezultat=statment.executeQuery();
    		 
    		 while(rezultat.next()){
    			 Casopis cas=new Casopis (rezultat.getInt("id_casopis"), rezultat.getString("naziv"), rezultat.getDouble("cijena"));
    			 
    			 Casopis.add(cas);
    		 }
    		 rezultat.close();
    		 statment.close();
    		 konekcija.close();
    	 }
    	  catch(SQLException e){
    		  e.printStackTrace();
    	  }
    	  return Casopis;
    }
}
